package com.example.controller;

import com.example.service.EmpService;
import com.example.service.impl.EmpServiceImpl;
import com.example.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.lang.reflect.InvocationTargetException;
import java.util.List;

@RestController
public class EmployeeController {

//    @Autowired

    //依赖注入 @Autowired 表示自动装配,由spring提供的注解，将EmpServiceImpl的实例注入到empImp变量中  按类型自动装配
    //当有多个EmpServiceImpl的实现类时，可以用@Qualifier注解指定具体的实现类，如@Autowired @Qualifier("empServiceImpl2") EmpServiceImpl empImp
    //@Qualifier注解可以根据名字来指定具体的实现类，而不用指定类型，如@Autowired @Qualifier("empServiceImpl2") EmpServiceImpl empImp
    //@Resource注解也可以用来自动装配，但需要导入javax.annotation.Resource包，且只能根据名字来指定具体的实现类，如@Resource(name="empServiceImpl2") EmpServiceImpl empImp

    @Resource(name="empServiceImpl")  // 按名字自动装配  这是jdk提供的注解
//    @Qualifier("empServiceImpl")  // 按名字自动装配  这是spring提供的注解

    private EmpService empImp;

    @GetMapping("/getEmployeeList")
    public Result getEmployeeList() throws InvocationTargetException, InstantiationException, IllegalAccessException, NoSuchMethodException {

        List<Employee> employeeList = empImp.empList();

        /* //读取xml文件，解析出员工列表
        String filePath = this.getClass().getClassLoader().getResource("emp.xml").getFile();
        //解析xml文件
        List<Employee> employeeList = XmlParserUtils.parse(filePath, Employee.class);

        //处理 员工列表
        for (Employee employee : employeeList) {
            String gender = employee.getGender();
            if ("1".equals(gender)) {
                employee.setGender("男");
            } else if ("2".equals(gender)) {
                employee.setGender("女");
            }
            //1: 讲师, 2: 班主任 , 3: 就业指导
            String job = employee.getJob();
            if ("1".equals(job)) {
                employee.setJob("讲师");
            } else if ("2".equals(job)) {
                employee.setJob("班主任");
            } else if ("3".equals(job)) {
                employee.setJob("就业指导");
            }
        }*/
        //返回数据结果
        return Result.success(employeeList);

    }

}
